home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / m2 / ModulaScan.lha / ModulaScan / ModulaScan.asm < prev    next >
Assembly Source File  |  1995-05-21  |  2KB  |  72 lines

  1. ; GoldED Scanner fuer MODULA DEFINITION MODULES
  2. ; es werden PROCEDURE, CONST, TYPE und VAR erkannt.
  3. ; Dafuer muss aber auch vor jedem Objekt das entsprechende Schlüsselwort stehen.
  4.  
  5.         movem.l a1-a2,-(SP)
  6.         moveq.l #0,d0
  7.         movea.l (a0),a1
  8.         cmpi.b  #"P",(a1)         ; Proceduren suchen
  9.         beq     pro
  10.         cmpi.b  #"T",(a1)         ; nein, dann Typen suchen
  11.         beq     typ
  12.         cmpi.b  #"C",(a1)         ; nein, dann Konstanten suchen
  13.         beq     con
  14.         cmpi.b  #"V",(a1)         ; nein, dann Variablen suchen
  15.         bne     ende
  16.         
  17.         lea     varstr,a2         ; Variablen suchen
  18. varl    cmpi.b  #0,(a2)
  19.         beq     gefun             ; gefunden
  20.         cmpm.b  (a2)+,(a1)+
  21.         bne     ende              ; nicht gefunden
  22.         bra     varl
  23.  
  24. pro     lea     prostr,a2         ; Proceduren suchen
  25. prol    cmpi.b  #0,(a2)
  26.         beq     gefun             ; gefunden
  27.         cmpm.b  (a2)+,(a1)+
  28.         bne     ende              ; nicht gefunden
  29.         bra     prol
  30.  
  31. typ     lea     typstr,a2         ; Typen suchen
  32. typl    cmpi.b  #0,(a2)
  33.         beq     gefun             ; gefunden
  34.         cmpm.b  (a2)+,(a1)+
  35.         bne     ende              ; nicht gefunden
  36.         bra     typl
  37.  
  38. con     lea     constr,a2         ; Konstanten suchen
  39. conl    cmpi.b  #0,(a2)
  40.         beq     gefun             ; gefunden
  41.         cmpm.b  (a2)+,(a1)+
  42.         bne     ende              ; nicht gefunden
  43.         bra     conl
  44.  
  45. gefun   cmpi.b  #" ",(a1)+
  46.         beq     gefun
  47.         suba.l  #1,a1
  48.         move.l  a1,(a0)           ; schon mal den Namen merken
  49. loop    cmpi.b  #" ",(a1)         ; Länge berechnen
  50.         beq     ende
  51.         cmpi.b  #"(",(a1)
  52.         beq     ende
  53.         cmpi.b  #";",(a1)
  54.         beq     ende
  55.         cmpi.b  #":",(a1)
  56.         beq     ende
  57.         cmpi.b  #",",(a1)
  58.         beq     ende
  59.         cmpi.b  #"=",(a1)+
  60.         beq     ende
  61.         addq.l  #1,d0
  62.         bra loop
  63.  
  64. ende    movem.l (SP)+,a1-a2
  65.         rts
  66.  
  67. prostr  dc.b    'PROCEDURE',0
  68. constr  dc.b    'CONST',0
  69. varstr  dc.b    'VAR',0
  70. typstr  dc.b    'TYPE',0
  71.  
  72.